package model

import (
	"github.com/zeromicro/go-zero/core/logx"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var (
	db  *gorm.DB
	err error
)

func init() {
	dsn := "root:123456@tcp(127.0.0.1:3306)/2108a?charset=utf8mb4&parseTime=True&loc=Local"
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		logx.Error(err)
		return
	}
	db.AutoMigrate(new(House), new(Facility), new(HouseFacility), new(Area))
}

// 房屋表	house
type House struct {
	gorm.Model
	UserId  uint   `gorm:"column:user_id;type:int(11);not null" json:"user_id"` // 房屋主人的用户编号
	AreaId  uint   `gorm:"column:area_id;type:int(11);not null" json:"area_id"` // 归属地的区域编号
	Title   string `gorm:"column:title;type:varchar(64);not null" json:"title"` // 房屋标题
	Address string `gorm:"column:address;type:varchar(512);not null" json:"address"`
	Acreage uint   `gorm:"column:acreage;type:int(11);not null" json:"acreage"`          // 房屋总面积
	Price   uint   `gorm:"column:price;type:int(11);not null" json:"price"`              // 房屋总价，单位：分
	Unit    string `gorm:"column:unit;type:varchar(32);default:'';not null" json:"unit"` // 房屋单价，单位：元/平米/月
	Deposit uint   `gorm:"column:deposit;type:int(11);not null" json:"deposit"`          // 押金
	Images  string `gorm:"column:images;type:varchar(2000);default:'';" json:"images"`   // 房屋的图片
}

// 房屋设施表	facility
type Facility struct {
	gorm.Model
	Name string `gorm:"column:name;type:varchar(32);not null" json:"name"` // 设施名称
}

// 房屋设施关联表	house_facility
type HouseFacility struct {
	gorm.Model
	HouseId    uint `gorm:"column:house_id;type:int(11);not null" json:"house_id"`       // 房屋编号
	FacilityId uint `gorm:"column:facility_id;type:int(11);not null" json:"facility_id"` // 设施编号
}

// 地区表	area
type Area struct {
	gorm.Model
	Name string `gorm:"column:name;type:varchar(32);not null" json:"name"` // 区域名字
}
